Call centre

ABSTRACT

In a call centre connected via a network to a number of terminals, at least part of a process of automatic call distribution (ACD) is carried out at the terminals.

BACKGROUND TO THE INVENTION

The present invention relates to a call centre and to a communicationsnetwork using such a call centre.

Call centres are widely used by commercial organisations, for thehandling of incoming calls and/or for initiating calls to customers.Typically, a call centre will have a large number of lines associatedwith a single number. Calls are received from customers and held in aqueue before being directed to the next available agent. Prior to beingplaced in the queue the customer may indicate, e.g. using DTMF tones,the type of call they are making, and they may be placed in a queue fora specific group of agents depending on the type of call.

It has been recognised that the World Wide Web provides a means forenhancing communication between customers and a call centre. It has beenproposed to enable customers to initiate a call from a call centre via aweb page. For example, WO97/50235 discloses a system in which a customerenters their phone number on a form in an HTTP page, and then clicks ona “submit” button to request a call from the call centre.

SUMMARY OF THE INVENTION

According to a first aspect of the present invention there is provided amethod of operating a communications system comprising a call centre anda plurality of customer terminals connected via a communications networkto the call centre, characterised in that at least part of a process ofautomatic call distribution (ACD) is carried out at a customer terminal.

The term “call centre” as used herein encompasses, as well asconventional PSTN call centres, call centres which distribute callsusing data protocols such as H323, and hybrid centres handling bothPSTN, Voice over IP and data calls.

The present invention provides a method of operating a call centre whichsignificantly increases the efficiency of use of the capacity of thecall centre and of the associated network. This is achieved by shiftingat least part of the process of automatic call distribution, that is theprocess whereby a call is assigned to a particular one of the agents,from the call centre to the customer terminal. Then instead of linesbeing tied up with queuing customers, the setting up of a call may bedelayed until an agent is available.

Preferably the method comprises

a) communicating ACD (automatic call distribution) data to a customerterminal;

b) using the ACD data selecting at the customer terminal an agent group;and

c) subsequently establishing a call from a customer terminal via thecall centre to an agent in the group selected in step (b).

Automatic call distribution data is data which identifies, explicitly orimplicitly, different groups of call agents, and which in a conventionalcall centre is processed at the call centre to allocate the next freeagent in a selected group. In the present invention, this data is usedinstead at the customer terminal, so that an agent group, and preferablya specific agent, can be selected prior to the terminal establishing anin-band connection with the call centre.

Preferably the result of the selection made at the customer terminal instep (b) is communicated to the call centre via the communicationsnetwork. Preferably the communications network is a data networksupporting a packet-based internetworking protocol. In the embodimentsdescribed below, the data network is the Internet. Preferably the callestablished in step (c) is also established via the said data network.Alternatively, the call may be established via another network, such asthe PSTN (public switched telephony network).

Preferably, step (c) is carried out only when the respective agent isfree. Preferably the method includes running a call processingapplication at the customer terminal and communicating control data forthe call processing application from the call centre to the customerterminal.

Preferably the call established in step (c) is set up from the callcentre to the customer terminal. Preferably a client application runningon the customer terminal returns a network address of the customerterminal on the data network to the call centre, and the call centreestablishes a call via the data network to the said address.

The inventors have found it to be particularly advantageous to havecalls set up via, e.g., the Internet, from the call centre to thecustomer terminal, using e.g. the IP address of the customer terminal.The network address will in general be known to any client applicationrunning on the customer terminal, and can therefore be made available tothe call centre without requiring intervention by the customer.Moreover, functioning in this manner obviates the need for directinteraction between, e.g., a Java ACD applet on the customer terminaland an internet telephony application on the customer terminal, therebyeliminating interworking problems between these applications.

Preferably the method includes setting up a call between the customerterminal and an agent, storing data identifying the said agent, andautomatically directing a subsequent call from the customer terminal tothe said agent identified in the said stored data.

This preferred feature of the invention makes it possible to overcomethe impersonality experienced by the customer when using a conventionalcall centre. Whereas conventionally if a customer rings a call centrewith an enquiry, and then rings back a short time later, they will beconnected to a different agent on each occasion, using the presentinvention is possible to ensure that when they ring back they areconnected to the same agent. This is done by storing data recording theidentity of the agent who takes the initial call. This is advantageouslydone using a cookie, that is a data item in a defined format stored onthe customer terminal. This cookie is then automatically returned to thecall centre when the customer subsequently accesses the call centre webpage.

According to a second aspect of the present invention, there is provideda method of operating a communications system comprising a call centreand a plurality of customer terminals connected via a communicationsnetwork to the call centre, in which automatic call distribution iscarried out before a call is setup.

The present invention also encompasses call centres or customerterminals adapted to operate in accordance with the method of the firstaspect.

DESCRIPTION OF THE DRAWINGS

Systems embodying the present invention will now be described in furtherdetail, by way of example only, with reference to the accompanyingdrawings, in which;

FIG. 1 is a schematic of a communications system embodying theinvention;

FIG. 2 shows the architecture of the principal components of the systemof FIG. 1;

FIG. 3 shows the software objects used to implement the agent sessioncomponent; and

FIG. 4 shows the information flows in a system embodying the inventionwhen an agent is busy;

FIG. 5 is a diagram showing objects used in implementing the invention;

FIG. 6 shows instances of the objects of FIG. 5;

FIG. 7 shows definitions of the objects of FIGS. 5 and 6.

DESCRIPTION OF EXAMPLES

As shown in FIG. 1, a communications system comprises a call centre 1connected to first and second communications networks 2,3. In thisexample, the first network 2 is the PSTN (public switched telephonynetwork) and connects the call centre 1 to customer terminals 4comprising telephones. The second network 3 is the Internet and connectscustomer terminals 5 comprising, e.g. personal computers which run aninternet telephony client such as Microsoft's NetMeeting (Trade Mark).As shown in the Figure, one of the telephones may be co-located with oneof the personal computers, e.g. when the customer has two telephonelines used simultaneously for voice and data respectively.

A first platform 101 in the call centre 1, the telephony platform, runsa call centre application. The call centre application uses resourcesprovided by lower level modules including an agent session component(ASC) module and a call management module. The first platform isconnected to a second platform 102 which functions as an IP (internetprotocol) telephony switch and connects calls from customer terminals toa selected one of a number of agents. Each agent is implemented using adata terminal and a respective internet telephony client. The agents maybe located at the call centre or at respective remote sites. A PABXconnects calls from the PSTN 2 e.g. using ISDN to the PABX and using aCTI protocol on the interface to the telephony platform. Traffic fromthe PSTN is packetised and passed to the agents via an H323 gateway andthe IP telephony switch. The H323 protocol, which is a well knownprotocol used e.g. for multimedia conferencing over internetconnections, is also used to connect the agents to the IP telephonyswitch.

The CTI (computer telephony interfaces) in the call centre may beinterfaces using both first party and third party call components, asdescribed and claimed in our co-pending British Patent applicationnumber 9800803.0 filed 14.1.98, agent's ref. A25559, the contents ofwhich are incorporated herein by reference.

As shown in FIG. 2, users of the customer terminals 5 employ a webbrowser which addresses the call centre using an appropriate URL anddownloads e.g. a Java applet which provides a data interface to theagent session component in the telephony platform. ACD (automatic calldistribution) data is communicated from the agent session component tothe customer terminal via this data interface. The ACD data communicatedto the web browser from the call centre may include the identities of anumber of agent groups (e.g. “technical”, “marketing”, “sales”) and thestatus of the corresponding queues. The status information mightinclude, for example, the length of the queue and the expected waitingtime in the queue. The agent group identities may be returned as HTTPdata and displayed explicitly on the web page. The status data may bereturned as variables to the Java applet and are handled appropriatelyby the applet. Although the status data may be displayed directly on theweb page, in a preferred implementation, the status data is used by theJava applet to control the outputting of audio announcements or voiceclips.

Optionally, the ACD data may extend to identifying individual agents.For example, a button may be associated with an agent group which, whenclicked, displays a list of agent names, together with further buttonsfor the selection of a particular agent by the customer. Then, when thecustomer clicks on the “call me” button, their call is only set up whenthe named agent is free. Alternatively, explicit agent identity data maynot be shown to the customer, but when a call is established, the agentidentity may be stored, e.g. as a cookie on the customer terminal oralternatively in a cache at the call centre, and a subsequent callwithin a defined period, e.g. on the same day, may be queued forconnection to the same agent.

Although alternatively other client applications may be used to interactwith the call centre, for example through the use of a dedicated plug-inclient, the use of Java applets is preferred since the applets can runon any Web browser and do not threaten the security of the customerterminal.

The user may initiate a call to the call centre by pressing a “call me”button on the relevant web page. A separate “call me” button may bedisplayed on the web page for each agent group, or there may be a singlecall me button on the page and, e.g., radio buttons beside each agentgroup to indicate the customer's selection. When the customer clicks onthe “call me” button, the Java applet returns the unique IP address ofthe customer terminal for use by the in later IP telephony calls withthe call centre. Even before that button is pressed, the applet mayreturn data to the call centre, e.g. when ever the user's mouse is overthe button, or whenever a user first selects the relevant web page. Thisinformation may subsequently be used for a telemarketing campaign,calling all users that have shown interest in a particular web site. Inthis way the call centre is provided with useful statistics in thepre-call phase, before a call has been set up, and this information maybe used in controlling the queues to call centre agents, and in otherlogic functions implemented at the call centre. This information may bepresented to agent supervisors along with other agent statistics. Forexample a display showing numbers of busy agents, free agents, customersheld in queues, customers with mice positioned to call and customerslooking at the company web page. Such information is of use to systemsadministrators.

As a customer clicks their mouse over the ‘call me’ button an appletwill request a free agent from the ACD.

When a customer decides to call the call centre instead of making thecall immediately, the caller may receive voice clips via the browsersimulating an IVR (intelligent voice response) system at the callcentre. Since the browser (for example by using CGI scripts and custompages or by using an applet) is aware of the status of the Call Centre,in terms of queue lengths etc, the voice clips reflect what an IVRsystem would play in those circumstances if the call to the call centrehad already been set up. as previously described the conventional ‘press1 for sales; 2 for marketing; 3. etc’ dialogue is replaced with a GUI(graphic user interface) style options menu with point and clickbuttons. The caller may be presented with audio and visual images of theproduct/company while they wait. When an agent is available the call isfinally set up. This may occur in either direction. Audio data may bedownloaded to the client application when the relevant web page is firstvisited. This is appropriate, for example, for background music that isto be played to the user as they wait for an agent, and for a ring tonethat is to be played to the customer when a call is initiated.Alternatively or in addition, other audio data is downloaded during theinitial burst of ring tone as the call is initiated: this may be moreappropriate for ‘progress’ type announcements. The audio clips mayinclude, e.g., announcements that “you are no. x in the queue”, where xis the position of the user in the queue. The applet may trigger theplaying of the appropriate voice clip in response to control inputs fromthe ASC. Other audio or visual information, including menus requiringuser input, may be presented to the user via the ASC/IP connection fromthe call centre both before, during and after the call. By playing audioclips of e.g. a ring tone and subsequent announcements, the applicationon the customer terminal simulates the existence of a call prior to thecall in fact being established.

If the Call Centre only makes/receives calls from the internet there isno need for the centre to have a traditional IVR (intelligent voiceresponse) system. There is also no need to have conventional queues ofcallers waiting to speak to an agent. As is further described below,callers queue before the call is made. If it is wished the caller may beasked if they would prefer to be called back, and if so could specifyfor example preferred times etc. on a web form. When a call is made, itmay be made using internet telephony, or using the PSTN in the case ofcustomers who have two telephone lines.

The implementation shown in FIG. 2 includes the following components:

ACDi Automatic Call Distribution Intelligence ASC Agent SessionComponent JTAPI Java Telephony Application Programming Interface NMNetMeeting NMCC NetMeetingCallComponent.

The relationship between the principle components, ACDi, Agent Session(ASC) and Agent Group is illustrated, using OOD (object oriented design)conventions in FIG. 5. FIG. 6 shows how these classes are instantiatedduring a particular session and FIGS. 7a to 7 b show definitions ofthese classes. The ACDi object acts as the centre of control andmaintains lists of all AgentSession and ACDGroup objects. It exports aCORBA interface to allow administration and utilisation offunctionality. The Automatic Call Distribution Group (ACDGroup)represents a call group within the call centre. As such, it allowsagents to become members and thereby service call requests applicable tothat group. For example different groups might relate to sales or totechnical support. Each ACDGroup maintains a list of registeredAgentSession objects, representing agents that are members of thatgroup. The AgentSession object represents an agent logged into the callcentre. AgentSession objects are created when an agent logs in andremoved when that agent logs out, giving the object a lifetime thatcorresponds to the log-in status of an agent. Each AgentSession objectmaintains a list of ACDGroup objects of which it is registered as amember.

In the example shown in FIG. 6, an agent, called Dave, is logged intothe system and has an AgentSession object that represents him. Dave isregistered as a member of the Marketing and Sales ACD Groups.

The ASC ascertains the availability of agents. It receives asynchronousnotification when an agent's availability alters. As described above,the web user can initiate a call or receive a call back from an agent inappropriate call group. For example the customer may choose from groupscorresponding to sales, order handling and invoicing. This menu ofchoices may be displayed to the user on the call centre web page. Anapplet, termed the “ASCENT” applet, at the customer terminal reflectsthe call request state visually and presents business specificinformation whilst waiting for a call to be established by a free agentmaking a return call to the user. The ASCENT applet may communicate withthe local IP telephony, e.g. Net Meeting, client. The applet may reflectthe call request state audibly by playing, e.g. ringing tones and statusmessages. In this way the applet simulates a call to the call centre,although the call only becomes a reality when an agent is free. In thisway the invention reduces the media stream bandwidth into the callcentre since the calls are not queued into the centre awaiting a freeagent. Call centre speech processing and dialogue handling is moved tothe client machine, reducing the cost to the call centre owner.

A software design implementing the invention will now be described infurther details. The availability of agents registered with theapplication is made known to the ASC via the addition of anAvailabilityObserver on application. When an agent's availabilityalters, the method availabilityChanged( . . . ) is invoked against theAvailabilityObserver to notify the ASC and the ACD Intelligence (ACDi)The ASC may have access into the application via CORBA, whereby methodscan be invoked across the network against remote objects. Theapplication when used to implement the invention provides the methodsspecified below:

boolean addAvailabilityObserver(AvailabilityObserver ao)

Allow the ASC to add an observer to the application in order to receiveasynchronous notification of agents' availability changes.

boolean removeAvailabilityObserver(AvailabilityObserver ao)

Allow the ASC to remove the observer previously added.

Agents[ ] getAgents( )

Allow the ASC to obtain a list of agents currently logged intoapplication, including their availability and ACD groups.

String[ ] getACDGroups( )

Allow the ASC to obtain a list of the available ACD groups within theapplication.

boolean makeCall(Agent agent, String nmIP)

Allow the ASC to initiate a call, on behalf of the specified agent, tothe specified NetMeeting IP address.

Agent Session Component (ASC)

The Agent Session Component (ASC) provides an API (applicationprogrammers interface) consisting of case-insensitive text-basedmessages. These are passed via a socket connection between the ASC andeach Call Applet. The messages are listed below. Angled brackets denoteparameters appropriate to the specified command.

Call Applet to ASC

[register, <nmIP>]

 Used to register the Call Applet with the ASC, passing it the IPaddress of the machine on which the applet is running, subsequently usedin all communication to unambiguously identify itself.

[deregister, <nmIP>]

 Used to deregister the Call Applet with the ASC.

[callrequest, <nmIP>, <ACD group>]

 Used when the Call Applet wishes to receive a call from an agent in thespecified ACD group.

[getacdinfo, <nmIP>]

 Returns the current state of the ACD groups, number of agents,busy/free status etc.

ASC to Call Applet

[requestqueued, <eturc>]

 Used when the intended agent that will handle a specific call is busy,but will be free after an estimated time until return call<eturc>seconds.

[freeagent]

 Sent when an appropriate agent's state has changed to free.

A scenario using the above design will now be described with referenceto FIG. 4. The numbers in this description denote the steps shown inthat Figure.

On the telephony platform the ASC, ACDi, and JTAPI are running. The ASCinitialises by adding an AvailabilityObserver to the ACDi (1), and thenobtains a list of agents currently registered (2). Whilst browsing theWWW, the Web User enters a URL that points to a HTML page containing theJava ASCENT applet. During initialisation, the ASCENT applet registersitself with the ASC (3), and proceeds to obtain a list of ACD groups andassociated agents' states (4). This information is presented via aGraphical User Interface (GUI) and the Web User is to select an ACDgroup with which to place a call request.

It the scenario illustrated in FIG. 4, the ACD group with which the WebUser has elected to place a call has no agents available at that time.The call request is queued at the ASC and a message is sent to theapplet to that end, along with an estimated time until return call(eturc) (6). At this point, intelligence in-built in the applet dealswith the situation and by playing audio status messages and givingvisual information such as company history and product information. Viathe AvailabilityObserver, a availabilitychanged( ) invocation isreceived by the ASC to indicate that an agent's state has changed (7).The agent that has become available is part of the ACD group that theapplet placed a call request with and so the applet is informed that anagent is now free (8). The ASC then makes a call on the free agent'sbehalf (9), which subsequently initiates an IP telephony call usingJTAPI (Java Telephony Application Programmers Interface) (10).

What is claimed is:
 1. A method for setting up a voice call connectionto an agent terminal within a call center from a user terminal remotefrom said call center, the method comprising: transmitting from the callcenter to the user terminal agent data describing one or more agentsand/or groups of agents associated with the call center and status datadescribing an availability status of said agents and/or groups ofagents; displaying, to a user of the user terminal, a list of the agentsand/or groups of agents at the call center; selecting an agent or groupof agents from said transmitted one or more agents and/or group ofagents in response to selection by a user; transmitting status updatemessages from the call center to the user terminal; playing audio clipsto the user from audio data stored at the user terminal in response tosaid transmitted status update messages, said audio clips simulating theexistence of a voice call connection, in the event that the selectedagent or group of agents is indicated by said status data as busy; andsubsequently initiating a voice call connection between the userterminal and a respective agent terminal associated with said selectedagent or group of agents when the selected agent or group of agentsbecomes free.
 2. A method according to claim 1 wherein the audio clipssimulate a conventional voice call connection to an automatic calldistribution system.
 3. A method of setting up a voice call connectionto one of a plurality of agent stations within a call center from a userstation remote from said call center, via a telecommunications network,the method comprising: transmitting from said call center to said userstation status information indicative of agent station availability;receiving a request at said user station from a user to set up a voicecall to a specified agent station; playing audio clips to the user fromaudio data stored at the user station in response to said transmittedstatus information, said audio clips simulating the existence of a voicecall connection, in the event that the selected agent or group of agentsis indicated by said status information as busy; and subsequentlyinitiating a voice call connection between the user station and thespecified agent station when said specified agent station becomes free.4. A method according to claim 3 wherein the audio clips simulate aconventional voice call connection to an automatic call distributionsystem.
 5. A telecommunications system comprising: a call center; atleast one remote user terminal connected to said call center via atelecommunications network, said call center having a plurality of agentterminals connected to said telecommunications network; storage meansfor storing agent data identifying one or more agents and/or groups ofagents associated with the call center together with status dataspecifying the status of the or each agent and/or group of agents; andtransceiver means for transmitting said agent data and said status datato said at least one user terminal and for receiving return data sent bysaid user terminal; said at least one user terminal comprising:transceiver means for receiving said agent data and said status data; auser interface for displaying a list of agents and/or groups of agentsbased on said received agent and status data and for enabling a user ofthe user terminal to select one of said displayed agents and/or groupsof agents and to select that a voice call connection should be set upfrom the user terminal to the selected agent and/or group of agents; andprocessing means for responding to user selections by playing audioclips to the user from audio data stored at the user terminal inresponse to said transmitted status update messages, said audio clipssimulating the existence of a voice call connection prior to such a callbeing established while waiting until status data is received from thecall center indicating that the selected agent and/or group of agents isfree, and thereupon setting up a voice call connection between the userterminal and one of said agent terminals associated with the selectedagent and/or group of agents.
 6. A user terminal for initiating a callover a telecommunications system to an agent terminal within a callcenter, the user terminal comprising: transceiver means for receivingfrom said call center agent data identifying one or more agents and/orgroups of agents associated with the call center and status dataspecifying the status of the or each agent and/or group of agents; auser interface for displaying a list of agents and/or groups of agentsbased on the received agent and status data and for enabling a user ofthe user terminal to select one of said displayed agents and/or groupsof agents and to select that a voice call connection should be set upfrom the user terminal to the selected agent and/or group of agents; andprocessing means for responding to the user selections by playing audioclips to the user from audio data stored at the user terminal inresponse to said transmitted status update messages, said audio clipssimulating the existence of a voice call connection prior to such a callbeing established while waiting until status data is received from thecall center indicating that the selected agent and/or group of agents isfree and thereupon setting up a voice call connection between the userterminal and one of said agent terminals associated with the selectedagent and/or group of agents.